package com.ziroom.crm.mq.core.reconsume;

import com.ziroom.crm.mq.core.exception.MqConsumeException;
import com.ziroom.crm.mq.core.processor.QueueWrapper;

import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;

/**
 * <p></p>
 * <p>
 * <PRE>
 * <BR>    修改记录
 * <BR>-----------------------------------------------
 * <BR>    修改日期         修改人          修改内容
 * </PRE>
 *
 * @author WeiShaoying
 * @version 1.0
 * @date Created in 2020年09月07日 11:44
 * @since 1.0
 */
public class ReConsumeMethodHolder {

    /**
     * <队列，消费者>
     */
    private static final Map<QueueWrapper, Object> HANDLE_METHOD_MAP = new ConcurrentHashMap<>();

    /**
     * 根据队列添加处理方法
     *
     * @param queueWrapper 队列wrapper
     */
    public static void addObject(QueueWrapper queueWrapper, Object object) {
        Object put = HANDLE_METHOD_MAP.put(queueWrapper, object);
        if (Objects.nonNull(put)) {
            throw new MqConsumeException("队列映射两个对象,queueName:" + queueWrapper.getName());
        }
    }

    /**
     * 移出队列的处理方法
     *
     * @param queueWrapper
     */
    public static void removeObject(QueueWrapper queueWrapper) {
        HANDLE_METHOD_MAP.remove(queueWrapper);
    }

    public static Object getObject(QueueWrapper queueWrapper) {
        return HANDLE_METHOD_MAP.get(queueWrapper);
    }
}
